
import { OmitDto, Rule, RuleType } from "@midwayjs/validate";

export class BaseTeacherDto{
	@Rule(RuleType.number().required().min(0))
	teacherId: number;

	@Rule(RuleType.number().optional().allow(null).allow('').min(0))
	userId?: number;

	@Rule(RuleType.string().optional().allow(null).allow('').max(500))
	teachId?: string;

	@Rule(RuleType.string().optional().allow(null).allow('').max(500))
	email?: string;

	@Rule(RuleType.string().optional().allow(null).allow('').max(500))
	summary?: string;

	@Rule(RuleType.string().optional().allow(null).allow('').max(500))
	majorField?: string;

	@Rule(RuleType.string().optional().allow(null).allow('').max(500))
	createBy?: string;

	@Rule(RuleType.string().optional().allow(null).allow('').max(500))
	createTime?: string;

	@Rule(RuleType.string().optional().allow(null).allow('').max(500))
	updateBy?: string;

	@Rule(RuleType.string().optional().allow(null).allow('').max(500))
	updateTime?: string;

	@Rule(RuleType.string().optional().allow(null).allow('').max(500))
	remark?: string;

	@Rule(RuleType.string().optional().allow(null).allow('').max(500))
	status?: string;

	@Rule(RuleType.string().optional().allow(null).allow('').max(500))
	delFlag?: string;

	// 下面是用户创建相关的可选字段（避免与教师字段冲突，统一加 user 前缀）
	@Rule(RuleType.string().optional().allow(null).allow('').max(30))
	userNickName?: string;

	@Rule(RuleType.string().optional().allow(null).allow('').min(6).max(20))
	userPassword?: string;

	@Rule(RuleType.number().optional().allow(null).allow('').min(0))
	userDeptId?: number;

	@Rule(RuleType.string().optional().allow(null).allow('').length(11))
	userPhonenumber?: string;

	@Rule(RuleType.string().optional().allow(null).allow('').max(1))
	userSex?: string;

	@Rule(RuleType.string().optional().allow(null).allow(''))
	userStatus?: string;

	@Rule(RuleType.string().optional().allow(null).allow('').email())
	userEmail?: string;

	@Rule(RuleType.array())
	userRoleIds?: Array<number>;

	@Rule(RuleType.array())
	userPostIds?: Array<number>;

  @Rule(RuleType.string().optional().allow(null).allow('').max(30))
  nickName?: string;

  @Rule(RuleType.string().optional().allow(null).allow('').min(6).max(20))
  password?: string;

  @Rule(RuleType.number().optional().allow(null, '').min(0))
  deptId?: number;

  @Rule(RuleType.string().optional().allow(null).allow('').length(11))
  phonenumber?: string;

  @Rule(RuleType.string().optional().allow(null).allow('').max(1))
  sex?: string;

  @Rule(RuleType.array().optional())
  roleIds?: Array<number>;

  @Rule(RuleType.array().optional())
  postIds?: Array<number>;

  @Rule(RuleType.string().optional().allow(null).allow('').max(30))
  userName?: string;

}
export class CreateTeacherDto extends OmitDto(BaseTeacherDto, ['teacherId']){}
export class UpdateTeacherDto extends BaseTeacherDto{}
export class QueryTeacherDto extends CreateTeacherDto{
  @Rule(RuleType.number().optional().min(0))
  pageNum?: number;

  @Rule(RuleType.number().optional().min(0))
  pageSize?: number;
}
export class ListTeacherDto extends BaseTeacherDto{}
